package demo.code;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.WriterAppender;

/**
 * 通过代码配置log4j
 * append: ConsoleAppender
 * layout: Pattern
 * @author hnnin
 */
public class PatternAndConsole {
	static Logger logger = Logger.getLogger(PatternAndConsole.class);
	public static void main(String args[]) throws IOException {
		/*
		 * Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，打印参数如下： %m 输出代码中指定的消息
		%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL  
		%r 输出自应用启动到输出该log信息耗费的毫秒数  
		%c 输出所属的类目，通常就是所在类的全名  
		%t 输出产生该日志事件的线程名  
		%n 输出一个回车换行符，Windows平台为“rn”，Unix平台为“n”  
		%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921  
		%l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。
		%m 输出信息
		*/
		String pattern = "Milliseconds since program start: %r %n";

		pattern += "Classname of caller: %C %n";

		pattern += "Date in ISO8601 format: %d{ISO8601} %n";

		pattern += "Location of log event: %l %n";

		pattern += "Message: %m %n %n";
		
		PatternLayout layout = new PatternLayout(pattern);
		ConsoleAppender appender=new ConsoleAppender(layout);
		logger.addAppender(appender);
		
		logger.setLevel((Level) Level.DEBUG);

		logger.debug("Here is some DEBUG");

		logger.info("Here is some INFO");

		logger.warn("Here is some WARN");

		logger.error("Here is some ERROR");

		logger.fatal("Here is some FATAL");
		
	}
}
